<?php
/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Ecm\V20190719\Models;
use TencentCloud\Common\AbstractModel;

/**
 * Enhanced service
 *
 * @method RunSecurityServiceEnabled getSecurityService() Obtain Whether to enable CWP.
 * @method void setSecurityService(RunSecurityServiceEnabled $SecurityService) Set Whether to enable CWP.
 * @method RunMonitorServiceEnabled getMonitorService() Obtain Whether to enable CM.
 * @method void setMonitorService(RunMonitorServiceEnabled $MonitorService) Set Whether to enable CM.
 * @method RunEIPDirectServiceEnabled getEIPDirectService() Obtain Whether to enable IP direct access. If this parameter is not specified, IP direct access will be enabled by default for Linux images and is currently not supported for Windows images.
 * @method void setEIPDirectService(RunEIPDirectServiceEnabled $EIPDirectService) Set Whether to enable IP direct access. If this parameter is not specified, IP direct access will be enabled by default for Linux images and is currently not supported for Windows images.
 */
class EnhancedService extends AbstractModel
{
    /**
     * @var RunSecurityServiceEnabled Whether to enable CWP.
     */
    public $SecurityService;

    /**
     * @var RunMonitorServiceEnabled Whether to enable CM.
     */
    public $MonitorService;

    /**
     * @var RunEIPDirectServiceEnabled Whether to enable IP direct access. If this parameter is not specified, IP direct access will be enabled by default for Linux images and is currently not supported for Windows images.
     */
    public $EIPDirectService;

    /**
     * @param RunSecurityServiceEnabled $SecurityService Whether to enable CWP.
     * @param RunMonitorServiceEnabled $MonitorService Whether to enable CM.
     * @param RunEIPDirectServiceEnabled $EIPDirectService Whether to enable IP direct access. If this parameter is not specified, IP direct access will be enabled by default for Linux images and is currently not supported for Windows images.
     */
    function __construct()
    {

    }

    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("SecurityService",$param) and $param["SecurityService"] !== null) {
            $this->SecurityService = new RunSecurityServiceEnabled();
            $this->SecurityService->deserialize($param["SecurityService"]);
        }

        if (array_key_exists("MonitorService",$param) and $param["MonitorService"] !== null) {
            $this->MonitorService = new RunMonitorServiceEnabled();
            $this->MonitorService->deserialize($param["MonitorService"]);
        }

        if (array_key_exists("EIPDirectService",$param) and $param["EIPDirectService"] !== null) {
            $this->EIPDirectService = new RunEIPDirectServiceEnabled();
            $this->EIPDirectService->deserialize($param["EIPDirectService"]);
        }
    }
}
